home *** CD-ROM | disk | FTP | other *** search
/ SPACE 1 / SPACE - Library 1 - Volume 1.iso / program / 441 / dlibs12 / lsearch.c < prev    next >
C/C++ Source or Header  |  1990-11-23  |  636b  |  36 lines

  1. #include <stddef.h>
  2.  
  3. char *lfind(key, base, num, size, cmp)
  4.     register char *key, *base;
  5.     unsigned int *num;
  6.     register unsigned int size;
  7.     register int (*cmp)();
  8.     {
  9.     register int n = *num;
  10.  
  11.     while(n--)
  12.         {
  13.         if((*cmp)(base, key) == 0)
  14.             return(base);
  15.         base += size;
  16.         }
  17.     return(NULL);
  18.     }
  19.  
  20. char *lsearch(key, base, num, size, cmp)
  21.     char *key, *base;
  22.     register unsigned int *num;
  23.     register unsigned int size;
  24.     int (*cmp)();
  25.     {
  26.     register char *p;
  27.     char *memcpy();
  28.  
  29.     if((p = lfind(key, base, num, size, cmp)) == NULL)
  30.         {
  31.         p = memcpy((base + (size * (*num))), key, size);
  32.         ++(*num);
  33.         }
  34.     return(p);
  35.     }
  36.